home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #2 / Monster Media No. 2 (Monster Media)(1994).ISO / pcboard / bcmx120.zip / SYSOP.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-07-11  |  13KB  |  890 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Integer  INTEGER001
  26.     Integer  INTEGER002
  27.     Integer  INTEGER003
  28.     Integer  INTEGER004
  29.     Integer  INTEGER005
  30.     Integer  INTEGER006
  31.     Integer  INTEGER007
  32.     Integer  INTEGER008
  33.     Integer  INTEGER009
  34.     Integer  INTEGER010
  35.     Integer  INTEGER011
  36.     Integer  INTEGER012
  37.     Integer  INTEGER013
  38.     Integer  INTEGER014
  39.     Integer  INTEGER015
  40.     Integer  INTEGER016
  41.     String   STRING001
  42.     String   STRING002
  43.     String   STRING003
  44.     String   STRING004
  45.     String   STRING005
  46.     String   TSTRING006(1)
  47.     String   STRING007
  48.     String   TSTRING008(100)
  49.     String   STRING009
  50.     String   STRING010
  51.     String   STRING011
  52.     String   STRING012
  53.     String   STRING013
  54.     String   STRING014
  55.     String   STRING015
  56.     String   STRING016
  57.     String   STRING017
  58.     String   STRING018
  59.     String   TSTRING019(6)
  60.     Int      INT001
  61.     Int      INT002
  62.     Int      INT003
  63.     Int      INT004
  64.     Int      INT005
  65.     Int      INT006
  66.     Int      INT007
  67.     Int      INT008
  68.     Int      INT009
  69.     Int      INT010
  70.     Int      INT011
  71.     Int      INT012
  72.     Int      INT013
  73.     BigStr   BIGSTR001
  74.  
  75. ;------------------------------------------------------------------------------
  76.  
  77.     BOOLEAN005 = 0
  78.     STRING009 = PPEPath() + "graph\systext"
  79.     If (LangExt() <> "") Then
  80.         If (Exist(STRING009 + LangExt())) STRING009 = STRING009 + LangExt()
  81.     Endif
  82.     GetUser
  83.     STRING010 = PPEPath() + "sysop.cfg"
  84.     STRING013 = PPEPath() + "mx.cfg"
  85.     STRING011 = PPEPath() + "work\systmp." + String(PcbNode())
  86.     Tokenize ReadLine(STRING010, 1)
  87.     STRING005 = GetToken()
  88.     STRING005 = GetToken()
  89.     If (Upper(STRING005) == "YES") Then
  90.         BOOLEAN005 = 1
  91.     Else
  92.         BOOLEAN005 = 0
  93.     Endif
  94.     STRING001 = PPEPath() + "\work\mxlog." + String(PcbNode())
  95.     If (BOOLEAN005) Then
  96.         If (LoggedOn()) Goto LABEL001
  97.         If (Exist(STRING013)) Then
  98.             If (Upper(ReadLine(STRING013, 3)) == "YES") Then
  99.                 FAppend 3, STRING001, 1, 0
  100.                 Goto LABEL001
  101.             Endif
  102.             BOOLEAN005 = 0
  103.         Endif
  104.     Endif
  105.     :LABEL001
  106.     If (BOOLEAN005) Then
  107.         STRING002 = "SYSOP_MODULE started at " + String(Time())
  108.         Gosub LABEL020
  109.     Endif
  110.     If (U_Sec < SysopSec()) Then
  111.         DefColor
  112.         Cls
  113.         PrintLn ReadLine(STRING009, 14)
  114.         Wait
  115.         STRING002 = "Not enough security, exiting sysop ppe"
  116.         Gosub LABEL020
  117.         End
  118.     Endif
  119.     INT013 = 14
  120.     Redim TSTRING006, INT013
  121.     TSTRING006(1) = "SYSTEM PASSWORD   : "
  122.     TSTRING006(2) = "NEW USER PASSWORD : "
  123.     TSTRING006(3) = "DO LOGGING        ? "
  124.     TSTRING006(4) = "# OF WELCOME FILES: "
  125.     TSTRING006(5) = "NEW USER SECURITY : "
  126.     TSTRING006(6) = "RETRIES           : "
  127.     TSTRING006(7) = "SHOW DISCLAIMER   ? "
  128.     TSTRING006(8) = "MATRIX TYPE       : "
  129.     TSTRING006(9) = "ALLOW MATRIX PAGE ? "
  130.     TSTRING006(10) = "PAGE FILE         : "
  131.     TSTRING006(11) = "TIME ADJUSTMENTS  : "
  132.     TSTRING006(12) = "LOGON RETRIES(ETC): "
  133.     TSTRING006(13) = "LOGOFF FILES, QUES: "
  134.     TSTRING006(14) = "SHOW VOTE STATUS  : "
  135.     INT001 = 1
  136.     INT002 = 2
  137.     INT003 = 3
  138.     INT004 = 4
  139.     INT005 = 5
  140.     INT006 = 6
  141.     INT007 = 7
  142.     INT008 = 8
  143.     INT009 = 9
  144.     INT010 = 10
  145.     INT011 = 11
  146.     INT012 = 12
  147.     BOOLEAN006 = 1
  148.     STRING015 = Chr(13)
  149.     DefColor
  150.     Cls
  151.     Tokenize ReadLine(STRING010, 1)
  152.     STRING005 = GetToken()
  153.     If (Upper(STRING005) == "YES") Then
  154.         If (Exist(PPEPath() + "graph\syshdr")) Then
  155.             DispFile PPEPath() + "graph\syshdr", 1 + 4
  156.             Newline
  157.         Endif
  158.         STRING018 = ""
  159.         STRING007 = Upper(ReadLine(STRING010, 2))
  160.         InputStr ReadLine(STRING009, 12) + "_", STRING018, 1, 60, Mask_Ascii(), 2 + 1
  161.         Newline
  162.         If (STRING018 == "") Then
  163.             If (BOOLEAN005) Then
  164.                 STRING002 = "No sysop password entered"
  165.                 Gosub LABEL020
  166.             Endif
  167.             PrintLn ReadLine(STRING009, 13)
  168.             Wait
  169.             End
  170.         Endif
  171.         If (Upper(STRING018) <> STRING007) Then
  172.             If (BOOLEAN005) Then
  173.                 STRING002 = "Incorrect sysop password entered"
  174.                 Gosub LABEL020
  175.             Endif
  176.             PrintLn ReadLine(STRING009, 13)
  177.             Wait
  178.             End
  179.         Endif
  180.     Endif
  181.     Goto LABEL004
  182.     :LABEL002
  183.     DefColor
  184.     Cls
  185.     StartDisp 1
  186.     DispFile STRING017, 1 + 4
  187.     For INTEGER016 = 1 To INTEGER015
  188.         TSTRING019(INTEGER016) = ScrText(INTEGER009, INTEGER010 + INTEGER016 - 1, INTEGER011, 1)
  189.     Next
  190.     INTEGER012 = 1
  191.     INTEGER013 = INTEGER009
  192.     INTEGER014 = INTEGER010
  193.     If (BOOLEAN006) Then
  194.         For INTEGER016 = 1 To INTEGER015
  195.             AnsiPos INTEGER013, INTEGER014 + INTEGER016 - 1
  196.             Print TSTRING019(INTEGER016)
  197.         Next
  198.     Endif
  199.     AnsiPos INTEGER013, INTEGER014 + INTEGER012 - 1
  200.     Print STRING016, StripAtx(TSTRING019(INTEGER012))
  201.     :LABEL003
  202.     STRING018 = ""
  203.     STRING018 = Inkey()
  204.     If (((Upper(STRING018) == "A") || (STRING018 == "UP")) || (STRING018 == "LEFT")) Then
  205.         AnsiPos INTEGER013, INTEGER014 + INTEGER012 - 1
  206.         Print TSTRING019(INTEGER012)
  207.         If (INTEGER012 == 1) Then
  208.             INTEGER012 = INTEGER015
  209.         Else
  210.             INTEGER012 = INTEGER012 - 1
  211.         Endif
  212.         AnsiPos INTEGER013, INTEGER014 + INTEGER012 - 1
  213.         Print STRING016, StripAtx(TSTRING019(INTEGER012))
  214.         Goto LABEL003
  215.     ElseIf (((Upper(STRING018) == "Z") || (STRING018 == "DOWN")) || (STRING018 == "RIGHT")) Then
  216.         AnsiPos INTEGER013, INTEGER014 + INTEGER012 - 1
  217.         Print TSTRING019(INTEGER012)
  218.         If (INTEGER012 == INTEGER015) Then
  219.             INTEGER012 = 1
  220.         Else
  221.             INTEGER012 = INTEGER012 + 1
  222.         Endif
  223.         AnsiPos INTEGER013, INTEGER014 + INTEGER012 - 1
  224.         Print STRING016, StripAtx(TSTRING019(INTEGER012))
  225.         Goto LABEL003
  226.     ElseIf ((STRING018 == STRING015) || ((STRING018 >= "1") && (STRING018 <= String(INTEGER015)))) Then
  227.         If (STRING018 <> STRING015) Then
  228.             INTEGER012 = STRING018
  229.         Endif
  230.         Return
  231.     Else
  232.         Goto LABEL003
  233.     Endif
  234.     End
  235.     :LABEL004
  236.     STRING017 = PPEPath() + "graph\sysmain"
  237.     INTEGER015 = 4
  238.     Tokenize ReadLine(STRING010, 3)
  239.     INTEGER009 = GetToken()
  240.     INTEGER010 = GetToken()
  241.     INTEGER011 = GetToken()
  242.     STRING016 = GetToken()
  243.     :LABEL005
  244.     Gosub LABEL002
  245.     Select Case (INTEGER012)
  246.         Case 1
  247.             If (BOOLEAN005) Then
  248.                 STRING002 = "Password menu selected at " + String(Time())
  249.                 Gosub LABEL020
  250.             Endif
  251.             Gosub LABEL006
  252.             Goto LABEL004
  253.         Case 2
  254.             If (BOOLEAN005) Then
  255.                 STRING002 = "Logs menu selected at " + String(Time())
  256.                 Gosub LABEL020
  257.             Endif
  258.             Gosub LABEL013
  259.             Goto LABEL004
  260.         Case 3
  261.             If (BOOLEAN005) Then
  262.                 STRING002 = "Configuration view menu selected at " + String(Time())
  263.                 Gosub LABEL020
  264.             Endif
  265.             Gosub LABEL019
  266.             Goto LABEL004
  267.         Case 4
  268.             If (BOOLEAN005) Then
  269.                 STRING002 = "Quit selected, exiting at " + String(Time())
  270.                 Gosub LABEL020
  271.             Endif
  272.             DefColor
  273.             Cls
  274.             End
  275.     End Select
  276.     Goto LABEL005
  277.     :LABEL006
  278.     DefColor
  279.     Cls
  280.     STRING017 = PPEPath() + "graph\syschg"
  281.     INTEGER015 = 5
  282.     Tokenize ReadLine(STRING010, 4)
  283.     INTEGER009 = GetToken()
  284.     INTEGER010 = GetToken()
  285.     INTEGER011 = GetToken()
  286.     STRING016 = GetToken()
  287.     :LABEL007
  288.     Gosub LABEL002
  289.     Select Case (INTEGER012)
  290.         Case 1
  291.             If (BOOLEAN005) Then
  292.                 STRING002 = "Change system pwd selected at " + String(Time())
  293.                 Gosub LABEL020
  294.             Endif
  295.             DefColor
  296.             Cls
  297.             PrintLn ReadLine(STRING009, 1), Upper(ReadLine(STRING013, INT001))
  298.             Newline
  299.             INTEGER008 = INT001
  300.             STRING014 = ReadLine(STRING009, 2)
  301.             Gosub LABEL010
  302.             Goto LABEL006
  303.         Case 2
  304.             If (BOOLEAN005) Then
  305.                 STRING002 = "Change nup selected at " + String(Time())
  306.                 Gosub LABEL020
  307.             Endif
  308.             DefColor
  309.             Cls
  310.             PrintLn ReadLine(STRING009, 3) + Upper(ReadLine(STRING013, INT002))
  311.             Newline
  312.             INTEGER008 = INT002
  313.             STRING014 = ReadLine(STRING009, 4)
  314.             Gosub LABEL010
  315.             Goto LABEL006
  316.         Case 3
  317.             If (BOOLEAN005) Then
  318.                 STRING002 = "Change matrix type selected at " + String(Time())
  319.                 Gosub LABEL020
  320.             Endif
  321.             DefColor
  322.             Cls
  323.             PrintLn ReadLine(STRING009, 5) + Upper(ReadLine(STRING013, INT008))
  324.             Newline
  325.             :LABEL008
  326.             STRING018 = ""
  327.             InputStr ReadLine(STRING009, 6) + "_", STRING018, 1, 60, Mask_Ascii(), 2
  328.             Newline
  329.             If (STRING018 == "") Then
  330.                 If (BOOLEAN005) Then
  331.                     STRING002 = "Change matrix type aborted"
  332.                     Gosub LABEL020
  333.                 Endif
  334.                 Goto LABEL006
  335.             Endif
  336.             If (((Upper(STRING018) <> "DOS") && (Upper(STRING018) <> "LIGHTBAR")) && (Upper(STRING018) <> "RANDOM")) Then
  337.                 If (BOOLEAN005) Then
  338.                     STRING002 = "Wrong matrix type (" + Upper(STRING018) + ") entered"
  339.                     Gosub LABEL020
  340.                 Endif
  341.                 Goto LABEL008
  342.             Endif
  343.             If (BOOLEAN005) Then
  344.                 STRING002 = "New matrix type (" + Upper(STRING018) + ") entered"
  345.                 Gosub LABEL020
  346.             Endif
  347.             FClose -1
  348.             FCreate 1, STRING011, 1, 0
  349.             FOpen 2, STRING013, 0, 0
  350.             If (Ferr(2)) Then
  351.                 If (BOOLEAN005) Then
  352.                     STRING002 = "Could not open mx.cfg for reading"
  353.                     Gosub LABEL020
  354.                 Endif
  355.                 PrintLn "ERROR opening mx.cfg for reading"
  356.                 FClose 1
  357.                 Delete STRING011
  358.                 Goto LABEL006
  359.             Endif
  360.             INTEGER016 = 1
  361.             FGet 2, STRING012
  362.             While (1) Do
  363.                 If (INTEGER016 == INT008) Then
  364.                     FPutLn 1, Upper(STRING018)
  365.                 Else
  366.                     FPutLn 1, STRING012
  367.                 Endif
  368.                 Inc INTEGER016
  369.                 FGet 2, STRING012
  370.                 If (Ferr(2)) Break
  371.             EndWhile
  372.             FClose 1
  373.             FClose 2
  374.             Gosub LABEL012
  375.             If (BOOLEAN005) Then
  376.                 STRING002 = "Matrix type succesfully updated to (" + Upper(STRING018) + ")"
  377.                 Gosub LABEL020
  378.             Endif
  379.         Case 4
  380.             If (BOOLEAN005) Then
  381.                 STRING002 = "Change user sec selected at " + String(Time())
  382.                 Gosub LABEL020
  383.             Endif
  384.             DefColor
  385.             Cls
  386.             PrintLn ReadLine(STRING009, 7), Upper(ReadLine(STRING013, INT005))
  387.             Newline
  388.             :LABEL009
  389.             STRING018 = ""
  390.             InputStr ReadLine(STRING009, 8) + "_", STRING018, 1, 3, Mask_Num(), 2
  391.             Newline
  392.             If (STRING018 == "") Then
  393.                 If (BOOLEAN005) Then
  394.                     STRING002 = "No new user security entered, aborting"
  395.                     Gosub LABEL020
  396.                 Endif
  397.                 Goto LABEL006
  398.                 Return
  399.             Endif
  400.             If ((ToInteger(STRING018) < 0) || (ToInteger(STRING018) > 255)) Then
  401.                 If (BOOLEAN005) Then
  402.                     STRING002 = "Incorrect security entered"
  403.                     Gosub LABEL020
  404.                 Endif
  405.                 Goto LABEL009
  406.             Endif
  407.             If (BOOLEAN005) Then
  408.                 STRING002 = "New new user sec (" + String(STRING018) + ") entered"
  409.                 Gosub LABEL020
  410.             Endif
  411.             FCreate 1, STRING011, 1, 0
  412.             FOpen 2, STRING013, 0, 0
  413.             If (Ferr(2)) Then
  414.                 If (BOOLEAN005) Then
  415.                     STRING002 = "Could not open mx.cfg for reading"
  416.                     Gosub LABEL020
  417.                 Endif
  418.                 PrintLn "Cannot open mx.cfg for reading"
  419.                 FClose 1
  420.                 Delete STRING011
  421.                 Goto LABEL006
  422.             Endif
  423.             INTEGER016 = 1
  424.             FGet 2, STRING012
  425.             While (1) Do
  426.                 If (INTEGER016 == INT005) Then
  427.                     FPutLn 1, Upper(STRING018)
  428.                 Else
  429.                     FPutLn 1, STRING012
  430.                 Endif
  431.                 Inc INTEGER016
  432.                 FGet 2, STRING012
  433.                 If (Ferr(2)) Break
  434.             EndWhile
  435.             FClose 1
  436.             FClose 2
  437.             FClose -1
  438.             Gosub LABEL012
  439.             If (BOOLEAN005) Then
  440.                 STRING002 = "New new user sec (" + String(STRING018) + ") updated"
  441.                 Gosub LABEL020
  442.             Endif
  443.         Case 5
  444.             Return
  445.     End Select
  446.     Goto LABEL007
  447.     :LABEL010
  448.     STRING018 = ""
  449.     If (Exist(STRING013)) Goto LABEL011
  450.     If (BOOLEAN005) Then
  451.         STRING002 = "mx.cfg not found, aborting password change"
  452.         Gosub LABEL020
  453.     Endif
  454.     PrintLn "Fatal error, matrix configuration file not found"
  455.     Wait
  456.     Return
  457.     :LABEL011
  458.     InputStr STRING014 + "_", STRING018, 1, 60, Mask_Ascii(), 2
  459.     If (STRING018 == "") Then
  460.         If (BOOLEAN005) Then
  461.             STRING002 = "No password entered, aborting password change"
  462.             Gosub LABEL020
  463.         Endif
  464.         Return
  465.     Endif
  466.     If (BOOLEAN005) Then
  467.         STRING002 = "New password (" + Upper(STRING014) + ") entered"
  468.         Gosub LABEL020
  469.     Endif
  470.     FCreate 1, STRING011, 1, 0
  471.     FOpen 2, STRING013, 0, 0
  472.     If (Ferr(2)) Then
  473.         If (BOOLEAN005) Then
  474.             STRING002 = "Could not open mx.cfg for reading"
  475.             Gosub LABEL020
  476.         Endif
  477.         PrintLn "Cannot open mxcfg for reading"
  478.         FClose 1
  479.         Delete STRING011
  480.         Return
  481.     Endif
  482.     INTEGER016 = 1
  483.     FClose -1
  484.     FGet 2, STRING012
  485.     While (1) Do
  486.         If (INTEGER016 == INTEGER008) Then
  487.             FPutLn 1, Upper(STRING018)
  488.         Else
  489.             FPutLn 1, STRING012
  490.         Endif
  491.         Inc INTEGER016
  492.         FGet 2, STRING012
  493.         If (Ferr(2)) Break
  494.     EndWhile
  495.     FClose 1
  496.     FClose 2
  497.     Gosub LABEL012
  498.     If (BOOLEAN005) Then
  499.         STRING002 = "Password changed to (" + Upper(STRING018) + ")"
  500.         Gosub LABEL020
  501.     Endif
  502.     Return
  503.     :LABEL012
  504.     FOpen 1, STRING011, 0, 0
  505.     FCreate 2, STRING013, 1, 3
  506.     If (Ferr(2)) Then
  507.         If (BOOLEAN005) Then
  508.             STRING002 = "Could not recreate mx.cfg"
  509.             Gosub LABEL020
  510.         Endif
  511.         PrintLn "Cannot recreate mx.cfg for writing, file is probably open"
  512.         PrintLn "By some other util, try again after closing that util"
  513.         Wait
  514.         Return
  515.     Endif
  516.     While (1) Do
  517.         FRead 1, BIGSTR001, 512
  518.         If (Ferr(1)) Then
  519.             FWrite 2, BIGSTR001, Len(BIGSTR001)
  520.             Break
  521.         Endif
  522.         FWrite 2, BIGSTR001, 512
  523.     EndWhile
  524.     FClose 1
  525.     FClose 2
  526.     Delete STRING011
  527.     Return
  528.     :LABEL013
  529.     StartDisp 2
  530.     DefColor
  531.     Cls
  532.     STRING001 = PPEPath() + "work\mxlog." + String(PcbNode())
  533.     INTEGER001 = 1
  534.     STRING018 = ""
  535.     InputStr ReadLine(STRING009, 9), STRING018, 1, 1, "vVSsDd", 2
  536.     Newline
  537.     If (STRING018 == "") Then
  538.         Return
  539.     Else
  540.         Select Case (Upper(STRING018))
  541.             Case "V"
  542.                 Gosub LABEL014
  543.             Case "S"
  544.                 Gosub LABEL015
  545.             Case "D"
  546.                 Gosub LABEL018
  547.             Endif
  548.     End Select
  549.     Return
  550.     :LABEL014
  551.     If (BOOLEAN005) Then
  552.         STRING002 = "View log selected at"
  553.         Gosub LABEL020
  554.     Endif
  555.     While (1) Do
  556.         STRING002 = ReadLine(STRING001, INTEGER001)
  557.         If (STRING002 == "") Break
  558.         If (Abort()) Break
  559.         STRING003 = Left(STRING002, 1)
  560.         If (STRING003 == "*") Then
  561.             PrintLn "@X0D", STRING002
  562.         ElseIf (STRING003 <> " ") Then
  563.             PrintLn "@X0F", STRING002
  564.         Else
  565.             STRING004 = Upper(Mid(STRING002, 5, 3))
  566.             Select Case (STRING004)
  567.                 Case "EXC"
  568.                     PrintLn "@X0C", STRING002
  569.                 Case "MAT"
  570.                     PrintLn "@X03", STRING002
  571.                 Case "NO "
  572.                     PrintLn "@X04", STRING002
  573.                 Case Else
  574.                     PrintLn "@X0E", STRING002
  575.                 Endif
  576.         End Select
  577.         Inc INTEGER001
  578.     EndWhile
  579.     Wait
  580.     Return
  581.     :LABEL015
  582.     If (BOOLEAN005) Then
  583.         STRING002 = "Search log selected at"
  584.         Gosub LABEL020
  585.     Endif
  586.     STRING018 = ""
  587.     InputStr ReadLine(STRING009, 10) + "_", STRING018, 1, 60, Mask_Ascii(), 2
  588.     If (STRING018 == "") Return
  589.     If (BOOLEAN005) Then
  590.         STRING002 = "Searching (" + Upper(String(STRING018)) + ")"
  591.         Gosub LABEL020
  592.     Endif
  593.     Newline
  594.     SearchInit STRING018, 0
  595.     INTEGER006 = 1
  596.     INTEGER007 = 1
  597.     FClose -1
  598.     FOpen 1, STRING001, 0, 0
  599.     BOOLEAN001 = 0
  600.     Goto LABEL016
  601.     BIGSTR001 = ""
  602.     BOOLEAN003 = 0
  603.     While (1) Do
  604.         INTEGER004 = INTEGER006
  605.         FRead 1, BIGSTR001, 512
  606.         If (Ferr(1)) Then
  607.             BOOLEAN003 = 1
  608.             INTEGER006 = INTEGER006 + Len(BIGSTR001)
  609.         Else
  610.             INTEGER006 = INTEGER006 + 512
  611.             While (1) Do
  612.                 FGet 1, STRING002
  613.                 BIGSTR001 = BIGSTR001 + STRING002
  614.                 If (STRING002 == "") Break
  615.                 INTEGER006 = INTEGER006 + Len(STRING002) + 2
  616.                 STRING003 = ""
  617.                 STRING003 = Left(STRING002, 1)
  618.                 If (STRING003 == "*") Then
  619.                     Break
  620.                 Endif
  621.                 If (Ferr(1)) Break
  622.             EndWhile
  623.         Endif
  624.         INTEGER005 = INTEGER006
  625.         SearchFind BIGSTR001, BOOLEAN001
  626.         If (BOOLEAN001) Then
  627.             INTEGER006 = INTEGER007
  628.             INTEGER007 = INTEGER007
  629.             FSeek 1, INTEGER004, 0
  630.             While (1) Do
  631.                 FGet 1, STRING002
  632.                 INTEGER006 = INTEGER006 + Len(STRING002) + 2
  633.                 STRING003 = Left(STRING002, 1)
  634.                 If (STRING003 == "*") Then
  635.                     INTEGER007 = INTEGER006
  636.                 Endif
  637.                 If (STRING002 == "") Then
  638.                     BOOLEAN003 = 1
  639.                     Break
  640.                 Endif
  641.                 SearchFind STRING002, BOOLEAN001
  642.                 If (BOOLEAN001) Gosub LABEL017
  643.                 If (Ferr(1)) Then
  644.                     BOOLEAN003 = 1
  645.                     Break
  646.                 Endif
  647.                 If (INTEGER006 >= INTEGER005) Break
  648.             EndWhile
  649.             If (BOOLEAN003) Break
  650.             FSeek 1, INTEGER005, 0
  651.         Endif
  652.         If (BOOLEAN003) Break
  653.         If (Ferr(1)) Break
  654.     EndWhile
  655.     FClose 1
  656.     Wait
  657.     Return
  658.     BIGSTR001 = ""
  659.     BOOLEAN002 = 0
  660.     BOOLEAN004 = 0
  661.     FGet 1, TSTRING008(1)
  662.     If (TSTRING008(1) == "") Then
  663.         PrintLn "NO ENTRY READ"
  664.         BOOLEAN002 = 1
  665.         Return
  666.     Endif
  667.     BIGSTR001 = BIGSTR001 + TSTRING008(1)
  668.     STRING003 = Left(TSTRING008(1), 1)
  669.     INTEGER003 = 1
  670.     For INTEGER016 = 2 To 100
  671.         FGet 1, TSTRING008(INTEGER016)
  672.         BIGSTR001 = BIGSTR001 + TSTRING008(INTEGER016)
  673.         STRING003 = Left(TSTRING008(INTEGER016), 1)
  674.         Inc INTEGER003
  675.         If (STRING003 <> " ") Then
  676.             PrintLn "ENTRY READ"
  677.             BOOLEAN004 = 1
  678.             Break
  679.         Endif
  680.         If (Ferr(1)) Break
  681.     Next
  682.     Return
  683.     :LABEL016
  684.     While (1) Do
  685.         STRING002 = ""
  686.         FGet 1, STRING002
  687.         If (STRING002 == "") Break
  688.         If (Abort()) Break
  689.         STRING003 = ""
  690.         STRING003 = Left(STRING002, 1)
  691.         INTEGER006 = INTEGER006 + Len(STRING002) + 2
  692.         If (STRING003 == "*") Then
  693.             INTEGER007 = INTEGER006
  694.         Endif
  695.         SearchFind STRING002, BOOLEAN001
  696.         If (BOOLEAN001) Gosub LABEL017
  697.     EndWhile
  698.     FClose 1
  699.     Wait
  700.     StartDisp 1
  701.     Return
  702.     :LABEL017
  703.     INTEGER002 = 0
  704.     INTEGER006 = INTEGER007
  705.     FSeek 1, INTEGER007, 0
  706.     While (1) Do
  707.         STRING002 = ""
  708.         FGet 1, STRING002
  709.         If (STRING002 == "") Break
  710.         INTEGER006 = INTEGER006 + Len(STRING002) + 2
  711.         STRING003 = Left(STRING002, 1)
  712.         If (STRING003 == "*") Then
  713.             INTEGER007 = INTEGER006
  714.             PrintLn "@X0D", STRING002
  715.             Break
  716.             Continue
  717.         Endif
  718.         If (STRING003 <> " ") Then
  719.             Print "@X0F"
  720.             PrFoundLn STRING002
  721.             Continue
  722.         Endif
  723.         STRING004 = Upper(Mid(STRING002, 5, 3))
  724.         If (STRING004 == "EXC") Then
  725.             Print "@X0C"
  726.             PrFoundLn STRING002
  727.             Continue
  728.         Endif
  729.         If (STRING004 == "MAT") Then
  730.             Print "@X03"
  731.             PrFoundLn STRING002
  732.             Continue
  733.         Endif
  734.         If (STRING004 == "NO ") Then
  735.             Print "@X04"
  736.             PrFoundLn STRING002
  737.             Continue
  738.         Endif
  739.         Print "@X0E"
  740.         PrFoundLn STRING002
  741.     EndWhile
  742.     Return
  743.     :LABEL018
  744.     If (BOOLEAN005) Then
  745.         STRING002 = "Delete log selected"
  746.         Gosub LABEL020
  747.     Endif
  748.     STRING018 = NoChar()
  749.     InputYN ReadLine(STRING009, 11) + " (mxlog." + String(PcbNode()) + ")", STRING018, 1
  750.     If (STRING018 == "") Return
  751.     If (Upper(STRING018) == Upper(NoChar())) Then
  752.         If (BOOLEAN005) Then
  753.             STRING002 = "Delete log aborted"
  754.             Gosub LABEL020
  755.         Endif
  756.         Return
  757.     Endif
  758.     If (Upper(STRING018) == Upper(YesChar())) Then
  759.         FClose -1
  760.         Delete STRING001
  761.         If (BOOLEAN005) Then
  762.             STRING002 = "Log deleted"
  763.             Gosub LABEL020
  764.         Endif
  765.     Endif
  766.     Return
  767.     :LABEL019
  768.     DefColor
  769.     Cls
  770.     StartDisp 2
  771.     For INTEGER016 = 1 To INT013
  772.         PrintLn "@X0F", TSTRING006(INTEGER016), "@X0D", ReadLine(STRING013, INTEGER016)
  773.         If (Abort()) Return
  774.     Next
  775.     Wait
  776.     Return
  777.     :LABEL020
  778.     If (LoggedOn()) Goto LABEL021
  779.     FPutLn 3, "    " + STRING002
  780.     Return
  781.     :LABEL021
  782.     Log STRING002, 0
  783.     Return
  784.  
  785. ;------------------------------------------------------------------------------
  786. ;
  787. ; Usage report (before postprocessing)
  788. ;
  789. ; ■ Statements used :
  790. ;
  791. ;    5       End
  792. ;    11      Cls
  793. ;    9       Wait
  794. ;    198     Goto 
  795. ;    170     Let 
  796. ;    11      Print 
  797. ;    23      PrintLn 
  798. ;    135     If 
  799. ;    2       DispFile 
  800. ;    4       FCreate 
  801. ;    5       FOpen 
  802. ;    1       FAppend 
  803. ;    18      FClose 
  804. ;    12      FGet 
  805. ;    7       FPutLn 
  806. ;    4       StartDisp 
  807. ;    1       GetUser
  808. ;    11      DefColor
  809. ;    5       Delete 
  810. ;    1       Log 
  811. ;    6       InputStr 
  812. ;    1       InputYN 
  813. ;    49      Gosub 
  814. ;    25      Return
  815. ;    5       Inc 
  816. ;    10      Newline
  817. ;    4       Tokenize 
  818. ;    6       AnsiPos 
  819. ;    3       FSeek 
  820. ;    2       FRead 
  821. ;    2       FWrite 
  822. ;    1       Redim 
  823. ;    1       SearchInit 
  824. ;    3       SearchFind 
  825. ;    5       PrFoundLn 
  826. ;
  827. ;
  828. ; ■ Functions used :
  829. ;
  830. ;    5       -
  831. ;    79      +
  832. ;    8       -
  833. ;    53      ==
  834. ;    9       <>
  835. ;    6       <
  836. ;    5       <=
  837. ;    1       >
  838. ;    10      >=
  839. ;    114     !
  840. ;    11      &&
  841. ;    10      ||
  842. ;    6       Len(
  843. ;    32      Upper()
  844. ;    2       Mid()
  845. ;    7       Left()
  846. ;    13      Ferr()
  847. ;    1       Chr()
  848. ;    3       Abort()
  849. ;    9       Time()
  850. ;    2       NoChar()
  851. ;    1       YesChar()
  852. ;    3       StripAtx()
  853. ;    1       Inkey()
  854. ;    17      String()
  855. ;    1       Mask_Num()
  856. ;    4       Mask_Ascii()
  857. ;    10      PPEPath()
  858. ;    4       PcbNode()
  859. ;    27      ReadLine()
  860. ;    1       SysopSec()
  861. ;    11      GetToken()
  862. ;    4       Exist()
  863. ;    3       LangExt()
  864. ;    2       LoggedOn()
  865. ;    1       ScrText()
  866. ;    2       ToInteger()
  867. ;
  868. ;------------------------------------------------------------------------------
  869. ;
  870. ; Analysis flags : s
  871. ;
  872. ; s - Sysop level access ■ 5
  873. ;     Program is reading the sysop access level, this may be normal
  874. ;     but still it is very suspect. It is the best way to give a user
  875. ;     all priviledges. Check!
  876. ;     ■ Search for : SYSOPSEC()
  877. ;
  878. ;------------------------------------------------------------------------------
  879. ;
  880. ; Postprocessing report
  881. ;
  882. ;    4       For/Next
  883. ;    10      While/EndWhile
  884. ;    82      If/Then or If/Then/Else
  885. ;    4       Select Case
  886. ;
  887. ;------------------------------------------------------------------------------
  888. ;                 AEGiS Corp - Break the routines, code against the machines!
  889. ;------------------------------------------------------------------------------
  890.